Preface?前 言无论是传统的企业型应用,还是当下的Web应用,作为一种数据库平台,PostgreSQL在为这些应用程序提供数据存储服务方面的可行性日趋成熟。不过,要想获取PostgreSQL的最佳性能,一直以来都并非易事。用户需遵循适宜的经验法则,需持续监控和维护以保障数据库系统健康运行,需以合理化建议定位和处理当前问题,需对数据库相关的附件工具有所涉猎,以便遇到核心数据库无法解决的问题时,可以为其进行功能扩展。
本书内容概述第1章介绍了PostgreSQL最近几个版本的性能改进情况。通常,人们认为所有软件的新版本会问题百出,而且会比以前的版本运行得更慢,但PostgreSQL不存在这个问题。
第2章讨论了如何仔细挑选服务器硬件中的主要部件,包括处理器、内存以及磁盘等,在预算允许的情况下如何组建一个稳定可靠的数据库存储服务器。特别是在磁盘控制器和驱动器方面,如果误用了易失性回写缓存,很容易导致数据库损坏。
第3章讨论了不同数据库硬件性能方面的量化标准。比如在你的系统当中,内存读取到底有多快?磁盘的原始性能有多强?在添加更多的磁盘后,数据库性能是否能正常按比例提升?第4章研究现行文件系统的可选方案,并就如何权衡硬盘中数据库的不同布局提出建议。同时也讨论了一些常见的有效文件系统的调优问题。
第5章深入研究了数据库在磁盘、内存中的存储机制,并解释了checkpoint进程是如何协调这两种存储机制以保证数据安全的。此外,该章还讨论了如何深入查看数据库所缓存的数据,以及在此基础上,确认当下存储在系统内存里的数据与你的预期数据是否一致。
第6章涵盖了postgresql.conf文件中的最重要的一些设置选项,介绍了这些选项的含义以及如何设置这些选项。此外,也指出了可能会引起问题的设置。
第7章首先阐释了PostgreSQL如何判定哪些行数据对哪些用户可见。这些可见性信息的存储方法需要一个名为VACUUM的清理进程来正常地重新使用剩余空间。此外,该章也涉及了一些常见问题以及针对这些问题的调节方式,也涵盖了一直运行的autovacuum。最后,该章介绍了数据库日志的数据量调节方式,以及如何使用查询日志分析器对结果进行分析,从而帮助用户找出查询瓶颈。
第8章研究如何使用PostgreSQL自带的pgbench测试程序来获取有用的基准评测结果。
第9章介绍索引在响应查询时是如何减少数据块的读取量的。这种方法可以彻底探索一些常见问题,比如为什么一个查询会使用顺序扫描而不是使用强大的索引扫描。
第10章是PostgreSQL optimizer(优化器)指南,根据一些查询例子的不同执行方式以及数据库参数的不同设置,来说明数据库的不同优化方式。
第11章介绍了数据库内部所收集的统计信息,以及哪些信息有助于查找问题。同时,也介绍了能够让你看到查询活动以及锁行为的一些视图。
第12章先介绍了如何使用操作系统所提供的基本监视工具以确定数据库的当前动作。然后,该章针对可按照时间对信息趋势进行图形化表示的软件给出了建议。
第13章对在同一时间内对数据库进行大量连接时所遇到的困难进行了说明。同时,建议使用两种软件包——连接池(以更好地对请求进行排序)和缓存(在不连接数据库的情况下响应用户请求)——来帮助解决这些问题。
第14章讲述了如何通过跨节点复制数据来减轻数据库的负载压力,典型的解决方式是,多个同步只读的从节点搭配一个可读写的主节点。
第15章探讨如何有效地将数据划分为子集,这样可以在数据库的一小部分上执行查询。所讨论的方法包括单节点数据库表分区和使用PL/Proxy及其相关工具集来构建跨多节点的共享数据库。
第16章探讨那些在PostgreSQL中看起来阻碍初学者使用的部分。重点是如何找到代码不工作的原因,以及有哪些现有工具可以帮助诊断问题。
第17章以统计记录数和外键处理作为例子,涵盖了所有批量导入部分。同时,该章还包括人们使用PostgreSQL时所遇到的常见问题。
第18章详细介绍了从PostgreSQL 8.1到9.6各个版本中与性能相关的功能变化情况。有时,避免常见问题并获得更好性能的最佳方式就是升级到不再存在问题的新版本。
你需要为阅读本书准备什么为了更好地利用本书,你至少需要一个能够连接服务器并执行查询的PostgreSQL客户端。理想情况下,你最好也是服务器管理员。从http://www.postgresql.org/download 上可以下载支持各种主流操作系统的完整客户端与服务端PostgreSQL安装包。本书的所有例子都是通过命令行方式执行的,通常是运行psql程序。这样可以使它们适合大多数操作系统平台。这样可以直接进行许多操作,而不必使用PostgreSQL的图形界面(GUI)工具,比如pgAdmin III程序。
本书提供的一些脚本是用bash脚本语言编写的,如果你使用的是Windows操作系统,可以从http://www.cygwin.com/ 下载cygwin软件套件,cygwin可以在Windows系统中提供常见的UNIX工具,比如bash。
本书读者本书适用于那些使用或计划使用PostgreSQL的中高级数据库管理员和开发人员。系统管理员可以在安装、配置和监视数据库服务器方面受益。本书对
本书内容概述第1章介绍了PostgreSQL最近几个版本的性能改进情况。通常,人们认为所有软件的新版本会问题百出,而且会比以前的版本运行得更慢,但PostgreSQL不存在这个问题。
第2章讨论了如何仔细挑选服务器硬件中的主要部件,包括处理器、内存以及磁盘等,在预算允许的情况下如何组建一个稳定可靠的数据库存储服务器。特别是在磁盘控制器和驱动器方面,如果误用了易失性回写缓存,很容易导致数据库损坏。
第3章讨论了不同数据库硬件性能方面的量化标准。比如在你的系统当中,内存读取到底有多快?磁盘的原始性能有多强?在添加更多的磁盘后,数据库性能是否能正常按比例提升?第4章研究现行文件系统的可选方案,并就如何权衡硬盘中数据库的不同布局提出建议。同时也讨论了一些常见的有效文件系统的调优问题。
第5章深入研究了数据库在磁盘、内存中的存储机制,并解释了checkpoint进程是如何协调这两种存储机制以保证数据安全的。此外,该章还讨论了如何深入查看数据库所缓存的数据,以及在此基础上,确认当下存储在系统内存里的数据与你的预期数据是否一致。
第6章涵盖了postgresql.conf文件中的最重要的一些设置选项,介绍了这些选项的含义以及如何设置这些选项。此外,也指出了可能会引起问题的设置。
第7章首先阐释了PostgreSQL如何判定哪些行数据对哪些用户可见。这些可见性信息的存储方法需要一个名为VACUUM的清理进程来正常地重新使用剩余空间。此外,该章也涉及了一些常见问题以及针对这些问题的调节方式,也涵盖了一直运行的autovacuum。最后,该章介绍了数据库日志的数据量调节方式,以及如何使用查询日志分析器对结果进行分析,从而帮助用户找出查询瓶颈。
第8章研究如何使用PostgreSQL自带的pgbench测试程序来获取有用的基准评测结果。
第9章介绍索引在响应查询时是如何减少数据块的读取量的。这种方法可以彻底探索一些常见问题,比如为什么一个查询会使用顺序扫描而不是使用强大的索引扫描。
第10章是PostgreSQL optimizer(优化器)指南,根据一些查询例子的不同执行方式以及数据库参数的不同设置,来说明数据库的不同优化方式。
第11章介绍了数据库内部所收集的统计信息,以及哪些信息有助于查找问题。同时,也介绍了能够让你看到查询活动以及锁行为的一些视图。
第12章先介绍了如何使用操作系统所提供的基本监视工具以确定数据库的当前动作。然后,该章针对可按照时间对信息趋势进行图形化表示的软件给出了建议。
第13章对在同一时间内对数据库进行大量连接时所遇到的困难进行了说明。同时,建议使用两种软件包——连接池(以更好地对请求进行排序)和缓存(在不连接数据库的情况下响应用户请求)——来帮助解决这些问题。
第14章讲述了如何通过跨节点复制数据来减轻数据库的负载压力,典型的解决方式是,多个同步只读的从节点搭配一个可读写的主节点。
第15章探讨如何有效地将数据划分为子集,这样可以在数据库的一小部分上执行查询。所讨论的方法包括单节点数据库表分区和使用PL/Proxy及其相关工具集来构建跨多节点的共享数据库。
第16章探讨那些在PostgreSQL中看起来阻碍初学者使用的部分。重点是如何找到代码不工作的原因,以及有哪些现有工具可以帮助诊断问题。
第17章以统计记录数和外键处理作为例子,涵盖了所有批量导入部分。同时,该章还包括人们使用PostgreSQL时所遇到的常见问题。
第18章详细介绍了从PostgreSQL 8.1到9.6各个版本中与性能相关的功能变化情况。有时,避免常见问题并获得更好性能的最佳方式就是升级到不再存在问题的新版本。
你需要为阅读本书准备什么为了更好地利用本书,你至少需要一个能够连接服务器并执行查询的PostgreSQL客户端。理想情况下,你最好也是服务器管理员。从http://www.postgresql.org/download 上可以下载支持各种主流操作系统的完整客户端与服务端PostgreSQL安装包。本书的所有例子都是通过命令行方式执行的,通常是运行psql程序。这样可以使它们适合大多数操作系统平台。这样可以直接进行许多操作,而不必使用PostgreSQL的图形界面(GUI)工具,比如pgAdmin III程序。
本书提供的一些脚本是用bash脚本语言编写的,如果你使用的是Windows操作系统,可以从http://www.cygwin.com/ 下载cygwin软件套件,cygwin可以在Windows系统中提供常见的UNIX工具,比如bash。
本书读者本书适用于那些使用或计划使用PostgreSQL的中高级数据库管理员和开发人员。系统管理员可以在安装、配置和监视数据库服务器方面受益。本书对